package com.admin.business.venusSysUser;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tiangong.framework.annotation.OpenApi;
import com.tiangong.framework.bo.CDO;
import com.tiangong.framework.bo.Return;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @description: 系统用户表
 * @create: 2022-03-22 18:46:06
 **/
@Service("venusSysUser")
@Slf4j
public class VenusSysUserService{

    @Resource
    VenusSysUserDao venusSysUserDao;

    /**
     * 添加系统用户表,获取user_id数据
     *
     * @param cdoRequest - user_id:
     *                   - user_name:用户真实姓名
     *                   - user_nickname:用户昵称
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     *                   - user_login_times:登陆次数
     *                   - user_email:邮箱
     *                   - user_last_time:最后一次登陆时间
     *                   - user_we_chat:微信
     *                   - user_qq:qq
     *                   - user_alipay:支付宝
     *                   - user_head_portrait:头像
     *                   - user_front_head_portrait:头像、前台使用
     *                   - user_authentication:是否认证（1代表认证，2代表没有认证）
     *                   - user_sex:性别（1、男 2、女）
     *                   - user_card_code:用户身份证号
     *                   - user_forbidden_info:禁用说明
     *                   - user_create_time:创建时间
     *                   - user_register_ip:用户注册IP
     *                   - user_hierarchy:用户等级
     *                   - user_specialist:是否为专家
     *                   - user_integral_num:积分数量
     *                   - user_experience:用户经验
     *                   - user_transact_business:助业币数量
     *                   - user_collection_folder_num:收藏文件夹数量
     *                   - user_publish_article_num:发布文章总数
     *                   - user_problem_num:发布问题总数
     *                   - user_question_answering_num:回答问题总数
     *                   - user_house_property_num:房产总数
     *                   - user_vehicle_num:车辆总数
     *                   - user_publish_model_num:发布范本总数
     *                   - user_house_book_num:房产证数量
     *                   - user_join_org_num:加入企业数量
     *                   - user_member_grade:会员等级
     *                   - user_empirical_value:会员经验值
     *                   - user_quiz_num:提问数量
     *                   - user_answer_num:回答数量
     *                   - user_thumb_up_num:点赞数量
     *                   - user_create_mass_num:创建社团数量
     *                   - user_join_mass_num:加入社团数量
     *                   - user_friend_num:好友数量
     *                   - user_unread_message_num:未读消息总数
     *                   - user_read_not_remind_num:未读提醒总数
     *                   - user_unread_station_num:未读站内总数
     *                   - user_status_dtl:会员禁用理由说明
     *                   - user_money:助业币数量
     *                   - user_lever:会员等级名称
     *                   - user_integral:会员积分数量
     *                   - user_login_forward:登陆成功后跳转（1、个人中心 2、物业管理 3、公司管理）
     *                   - user_school_name:毕业院校
     *                   - user_study_end_time:毕业时间
     *                   - user_major:专业
     *                   - user_start_time:工作开始时间
     *                   - user_pictures:相关专业证书
     *                   - user_marriage_status:婚姻状态(1 已婚 2 未婚)
     *                   - user_nation:民族
     *                   - user_politics:政治面貌
     *                   - province_id:省id
     *                   - city_id:市id
     *                   - district_id:区Id
     *                   - user_location:详细地址
     *                   - user_education:学校
     *                   - user_com_level:电脑使用水平
     *                   - user_social:是否有本地社保（1 有 2 没有）
     *                   - user_card_front_picture:身份证正面
     *                   - user_card_behind_picture:身份证反面
     *                   - user_live_pictures:生活照
     *                   - user_aphorism:员工格言
     *                   - user_weixin_open_id:微信openid
     *                   - user_brief_introduction:个人简介
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return addVenusSysUser(CDO cdoRequest) {
        venusSysUserDao.addVenusSysUser(cdoRequest);
        CDO cdoResult = new CDO();
        if (cdoRequest.containsKey("user_id")) {
            cdoResult.set("user_id", cdoRequest.get("user_id"));
        }
        return Return.valueOf(cdoResult);
    }

    /**
     * 根据user_id，更新系统用户表数据
     *
     * @param cdoRequest - user_id:
     *                   - user_name:用户真实姓名
     *                   - user_nickname:用户昵称
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     *                   - user_login_times:登陆次数
     *                   - user_email:邮箱
     *                   - user_last_time:最后一次登陆时间
     *                   - user_we_chat:微信
     *                   - user_qq:qq
     *                   - user_alipay:支付宝
     *                   - user_head_portrait:头像
     *                   - user_front_head_portrait:头像、前台使用
     *                   - user_authentication:是否认证（1代表认证，2代表没有认证）
     *                   - user_sex:性别（1、男 2、女）
     *                   - user_card_code:用户身份证号
     *                   - user_forbidden_info:禁用说明
     *                   - user_create_time:创建时间
     *                   - user_register_ip:用户注册IP
     *                   - user_hierarchy:用户等级
     *                   - user_specialist:是否为专家
     *                   - user_integral_num:积分数量
     *                   - user_experience:用户经验
     *                   - user_transact_business:助业币数量
     *                   - user_collection_folder_num:收藏文件夹数量
     *                   - user_publish_article_num:发布文章总数
     *                   - user_problem_num:发布问题总数
     *                   - user_question_answering_num:回答问题总数
     *                   - user_house_property_num:房产总数
     *                   - user_vehicle_num:车辆总数
     *                   - user_publish_model_num:发布范本总数
     *                   - user_house_book_num:房产证数量
     *                   - user_join_org_num:加入企业数量
     *                   - user_member_grade:会员等级
     *                   - user_empirical_value:会员经验值
     *                   - user_quiz_num:提问数量
     *                   - user_answer_num:回答数量
     *                   - user_thumb_up_num:点赞数量
     *                   - user_create_mass_num:创建社团数量
     *                   - user_join_mass_num:加入社团数量
     *                   - user_friend_num:好友数量
     *                   - user_unread_message_num:未读消息总数
     *                   - user_read_not_remind_num:未读提醒总数
     *                   - user_unread_station_num:未读站内总数
     *                   - user_status_dtl:会员禁用理由说明
     *                   - user_money:助业币数量
     *                   - user_lever:会员等级名称
     *                   - user_integral:会员积分数量
     *                   - user_login_forward:登陆成功后跳转（1、个人中心 2、物业管理 3、公司管理）
     *                   - user_school_name:毕业院校
     *                   - user_study_end_time:毕业时间
     *                   - user_major:专业
     *                   - user_start_time:工作开始时间
     *                   - user_pictures:相关专业证书
     *                   - user_marriage_status:婚姻状态(1 已婚 2 未婚)
     *                   - user_nation:民族
     *                   - user_politics:政治面貌
     *                   - province_id:省id
     *                   - city_id:市id
     *                   - district_id:区Id
     *                   - user_location:详细地址
     *                   - user_education:学历
     *                   - user_com_level:电脑使用水平
     *                   - user_social:是否有本地社保（1 有 2 没有）
     *                   - user_card_front_picture:身份证正面
     *                   - user_card_behind_picture:身份证反面
     *                   - user_live_pictures:生活照
     *                   - user_aphorism:员工格言
     *                   - user_weixin_open_id:微信openid
     *                   - user_brief_introduction:个人简介
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return updateVenusSysUserById(CDO cdoRequest) {
        int affectedRows = venusSysUserDao.updateVenusSysUserById(cdoRequest);
        CDO cdoResult = new CDO();
        cdoResult.set("affectedRows", affectedRows);
        return Return.valueOf(cdoResult);
    }

    /**
     * 根据user_id，删除系统用户表数据
     *
     * @param cdoRequest - user_id:
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return deleteVenusSysUserById(CDO cdoRequest){
        int affectedRows = venusSysUserDao.deleteVenusSysUserById(cdoRequest.getLong("user_id"));
        CDO cdoResult = new CDO();
        cdoResult.set("affectedRows", affectedRows);
        return Return.valueOf(cdoResult);
    }

    /**
     * 根据条件，删除系统用户表数据
     *
     * @param cdoRequest - user_name:用户真实姓名
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return deleteVenusSysUser(CDO cdoRequest) {
        int affectedRows = venusSysUserDao.deleteVenusSysUser(cdoRequest);
        CDO cdoResult = new CDO();
        cdoResult.set("affectedRows", affectedRows);
        return Return.valueOf(cdoResult);
    }

    /**
     * 根据ID，获取系统用户表数据
     *
     * @param cdoRequest - user_id:
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @DS("user")
    @OpenApi
    public Return getVenusSysUserById(CDO cdoRequest) {
        CDO cdoMapperResult = venusSysUserDao.getVenusSysUserById(cdoRequest.getLong("user_id"));
        return Return.valueOf(cdoMapperResult);
    }

    /**
     * 根据混合条件，获取系统用户表数据
     *
     * @param cdoRequest - user_id:
     *                   - user_name:用户真实姓名
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return getVenusSysUser(CDO cdoRequest) {
        CDO cdoMapperResult = venusSysUserDao.getVenusSysUser(cdoRequest);
        return Return.valueOf(cdoMapperResult);
    }

    /**
     * 根据非空条件，获取系统用户表数据列表
     *
     * @param cdoRequest - user_name:用户真实姓名
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return getVenusSysUserList(CDO cdoRequest) {
        Integer pageIndex = cdoRequest.containsKey("pageIndex") ? cdoRequest.getInteger("pageIndex") : 0;
        int recordSize = cdoRequest.containsKey("recordSize") ? cdoRequest.getInteger("recordSize") : 10;
        cdoRequest.set("recordFrom", pageIndex * recordSize);
        cdoRequest.set("recordSize", recordSize);
        List<CDO> cdoMapperResultList = venusSysUserDao.getVenusSysUserList(cdoRequest);
        boolean isEndPage = false;
        if (cdoMapperResultList.size() < recordSize) {
            isEndPage = true;
        }
        CDO cdoResult = new CDO();
        cdoResult.set("isEndPage", isEndPage);
        cdoResult.set("datalist", cdoMapperResultList);
//        int total = venusSysUserDao.getVenusSysUserListCount(cdoRequest);
//        cdoResult.set("total", total);
        return Return.valueOf(cdoResult);
    }

    /**
     * 根据混合条件，获取系统用户表数据列表
     *
     * @param cdoRequest - user_id:
     *                   - user_name:用户真实姓名
     *                   - user_pwd:密码
     *                   - user_tel:用户的手机号码
     *                   - user_status:状态(1、正常 2、禁用 )
     * @return
     * @author ht
     * @create: 2022-03-24 18:47:40
     */
    @OpenApi
    public Return getVenusSysUserListByCondition(CDO cdoRequest) {
        Integer pageIndex = cdoRequest.containsKey("pageIndex") ? cdoRequest.getInteger("pageIndex") : 0;
        int recordSize = cdoRequest.containsKey("recordSize") ? cdoRequest.getInteger("recordSize") : 10;
        cdoRequest.set("recordFrom", pageIndex * recordSize);
        cdoRequest.set("recordSize", recordSize);
        List<CDO> cdoMapperResultList = venusSysUserDao.getVenusSysUserListByCondition(cdoRequest);
        boolean isEndPage = false;
        if (cdoMapperResultList.size() < recordSize) {
            isEndPage = true;
        }
        CDO cdoResult = new CDO();
        cdoResult.set("isEndPage", isEndPage);
        cdoResult.set("datalist", cdoMapperResultList);
//        int total = venusSysUserDao.getVenusSysUserListByConditionCount(cdoRequest);
//        cdoResult.set("total", total);
        return Return.valueOf(cdoResult);
    }
}
